package ejercicio3;

import java.util.HashMap;
import java.util.Scanner;

public class Principal {

	public static void main(String[] args) {
		
		Monitor buffer = new Monitor();
		
		int opcion;
		long ID;
		Scanner sc = new Scanner(System.in);
		HashMap<Long, Thread> threads = new HashMap<Long, Thread>();
		while(true){
			System.out.println("1. Crear Productor");
			System.out.println("2. Crear Consumidor");
			System.out.println("3. Productor intenta introducir elemento");
			System.out.println("4. Productor finaliza la accion de introducir elemento");
			System.out.println("5. Consumidor intenta retirar elemento");
			System.out.println("6. Consumidor finaliza la accion de consumir elemento");
			
			opcion=Integer.parseInt(sc.nextLine().trim());
			
			switch(opcion){
			case 1:
				Productor p = new Productor(buffer);
				p.start();;
				threads.put(p.getId(), p);
				System.out.println("Productor creado correctamente. ID = "+p.getId());
				break;
			case 2:
				Consumidor c = new Consumidor(buffer);
				c.start();
				threads.put(c.getId(), c);
				System.out.println("Consumidor creado correctamente. ID = "+c.getId());
				break;
			case 3:
				System.out.println("> Indique el Thread ID: ");
				ID=Integer.parseInt(sc.nextLine().trim());
				try{
					Productor prod = (Productor)threads.get(ID);
					prod.resume();
				}catch(Exception e){
					System.out.println("No existe el Thread seleccionado o es un Thread de otro tipo");
				}
				break;
			
			case 4:
				System.out.println("> Indique el Thread ID: ");
				ID=Integer.parseInt(sc.nextLine().trim());
				try{
					Productor prod = (Productor)threads.get(ID);
					prod.resume();;
				}catch(Exception e){
					System.out.println("No existe el Thread seleccionado o es un Thread de otro tipo");
				}
				break;
				
			case 5:
				System.out.println("> Indique el Thread ID: ");
				ID=Long.parseLong(sc.nextLine().trim());
				try{
					Consumidor cons = (Consumidor)threads.get(ID);
					cons.resume();
				}catch(Exception e){
					System.out.println("No existe el Thread seleccionado o es un Thread de otro tipo");
				}
				break;
				
			case 6:
				System.out.println("> Indique el Thread ID: ");
				ID=Long.parseLong(sc.nextLine().trim());
				try{
					Consumidor cons = (Consumidor)threads.get(ID);
					cons.resume();
				}catch(Exception e){
					System.out.println("No existe el Thread seleccionado o es un Thread de otro tipo");
				}
				break;
			}
		}
	}

}
